↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → SPLIT_IN_GAAG(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_GAAG(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_AAAA(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_GAA(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → MERGE_IN_GGAG(Y1s, Y2s, Ys, .(H, Ls))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
LE_IN_AA(s(X), s(Y)) → U11_AA(X, Y, le_in_aa(X, Y))
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
GT_IN_AA(s(X), s(Y)) → U10_AA(X, Y, gt_in_aa(X, Y))
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → SPLIT_IN_GAAG(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_GAAG(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_AAAA(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_GAA(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → MERGE_IN_GGAG(Y1s, Y2s, Ys, .(H, Ls))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
LE_IN_AA(s(X), s(Y)) → U11_AA(X, Y, le_in_aa(X, Y))
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
GT_IN_AA(s(X), s(Y)) → U10_AA(X, Y, gt_in_aa(X, Y))
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
GT_IN_AA → GT_IN_AA
GT_IN_AA → GT_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LE_IN_AA → LE_IN_AA
LE_IN_AA → LE_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_in_aa)
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_in_aa)
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_in_aa)
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_in_aa)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U6_GAAA(le_in_aa)
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_in_aa)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_AGAA(.) → U8_AGAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U8_AGAA(U10_aa(gt_in_aa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_out_aa(s(0), 0))
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U8_AGAA(U10_aa(gt_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_out_aa(s(0), 0))
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U8_AGAA(U10_aa(gt_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAAA → SPLIT_IN_AAAA
SPLIT_IN_AAAA → SPLIT_IN_AAAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.) → U1_GAA(split_in_gaag(., .))
U1_GAA(split_out_gaag(X1s, X2s)) → U2_GAA(X2s, mergesort_in_gaa(X1s))
U1_GAA(split_out_gaag(X1s, X2s)) → MERGESORT_IN_GAA(X1s)
U2_GAA(X2s, mergesort_out_gaa(Y1s)) → MERGESORT_IN_GAA(X2s)
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, mergesort_out_gaa(.))
U1_GAA(split_out_gaag([], y1)) → U2_GAA(y1, mergesort_out_gaa([]))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.) → U1_GAA(split_in_gaag(., .))
U1_GAA(split_out_gaag([], y1)) → U2_GAA(y1, mergesort_out_gaa([]))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, mergesort_out_gaa(.))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U2_GAA(X2s, mergesort_out_gaa(Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(X1s, X2s)) → MERGESORT_IN_GAA(X1s)
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.) → U1_GAA(split_in_gaag(., .))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, mergesort_out_gaa(.))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U2_GAA(X2s, mergesort_out_gaa(Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(X1s, X2s)) → MERGESORT_IN_GAA(X1s)
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, mergesort_out_gaa(.))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U1_GAA(split_out_gaag(X1s, X2s)) → MERGESORT_IN_GAA(X1s)
U2_GAA(X2s, mergesort_out_gaa(Y1s)) → MERGESORT_IN_GAA(X2s)
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., x1)) → MERGESORT_IN_GAA(.)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
U1_GAA(split_out_gaag(., x1)) → MERGESORT_IN_GAA(.)
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, mergesort_out_gaa(.))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U2_GAA(X2s, mergesort_out_gaa(Y1s)) → MERGESORT_IN_GAA(X2s)
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U2_GAA(., mergesort_out_gaa(x1)) → MERGESORT_IN_GAA(.)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., x1)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, mergesort_out_gaa(.))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U2_GAA(., mergesort_out_gaa(x1)) → MERGESORT_IN_GAA(.)
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., mergesort_out_gaa(.))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
U1_GAA(split_out_gaag(., x1)) → MERGESORT_IN_GAA(.)
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., y1)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U2_GAA(., mergesort_out_gaa(x1)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., mergesort_out_gaa(.))
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., U1_gaa(split_in_gaag(., .)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., x1)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., U1_gaa(split_in_gaag(., .)))
U2_GAA(., mergesort_out_gaa(x1)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., mergesort_out_gaa(.))
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., x1)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., U1_gaa(split_in_gaag(., .)))
U2_GAA(., mergesort_out_gaa(x1)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., .)) → U2_GAA(., mergesort_out_gaa(.))
mergesort_in_gaa([]) → mergesort_out_gaa([])
mergesort_in_gaa(.) → mergesort_out_gaa(.)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(X1s, X2s)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., Zs)
U2_gaa(X2s, mergesort_out_gaa(Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Ys)) → mergesort_out_gaa(Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag(Xs)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa) → merge_out_ggag(.)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa) → merge_out_ggag(.)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa) → merge_out_agaa
U9_agaa(merge_out_gaaa) → merge_out_agaa
U7_gaaa(merge_out_agaa) → merge_out_gaaa
U9_gaaa(merge_out_gaaa) → merge_out_gaaa
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → SPLIT_IN_GAAG(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_GAAG(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_AAAA(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_GAA(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → MERGE_IN_GGAG(Y1s, Y2s, Ys, .(H, Ls))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
LE_IN_AA(s(X), s(Y)) → U11_AA(X, Y, le_in_aa(X, Y))
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
GT_IN_AA(s(X), s(Y)) → U10_AA(X, Y, gt_in_aa(X, Y))
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → SPLIT_IN_GAAG(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_GAAG(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_GAAG(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_AAAA(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_GAA(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
U3_GAA(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → MERGE_IN_GGAG(Y1s, Y2s, Ys, .(H, Ls))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
LE_IN_AA(s(X), s(Y)) → U11_AA(X, Y, le_in_aa(X, Y))
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GGAG(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
GT_IN_AA(s(X), s(Y)) → U10_AA(X, Y, gt_in_aa(X, Y))
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_AGAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → LE_IN_AA(X, Y)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GAAA(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GGAG(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → GT_IN_AA(X, Y)
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_GGAG(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U8_GGAG(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
GT_IN_AA(s(X), s(Y)) → GT_IN_AA(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
GT_IN_AA → GT_IN_AA
GT_IN_AA → GT_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
LE_IN_AA(s(X), s(Y)) → LE_IN_AA(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
LE_IN_AA → LE_IN_AA
LE_IN_AA → LE_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → MERGE_IN_AGAA(Xs, .(Y, Ys), Zs, Ls)
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_AGAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → MERGE_IN_GAAA(.(X, Xs), Ys, Zs, Ls)
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_GAAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
MERGE_IN_GAAA(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_GAAA(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
MERGE_IN_AGAA(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_AGAA(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_in_aa)
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_in_aa)
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_in_aa)
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_in_aa)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U6_GAAA(le_in_aa)
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_in_aa)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U8_AGAA(gt_in_aa)
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
MERGE_IN_AGAA(.) → U8_AGAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U8_AGAA(U10_aa(gt_in_aa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_out_aa(s(0), 0))
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U8_AGAA(U10_aa(gt_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
le_in_aa
gt_in_aa
U11_aa(x0)
U10_aa(x0)
U6_GAAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, s(0)))
MERGE_IN_AGAA(.) → U8_AGAA(gt_out_aa(s(0), 0))
U8_AGAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, s(0)))
U6_AGAA(le_out_aa(X, Y)) → MERGE_IN_AGAA(.)
MERGE_IN_GAAA(.) → U8_GAAA(gt_out_aa(s(0), 0))
MERGE_IN_AGAA(.) → U6_AGAA(U11_aa(le_in_aa))
MERGE_IN_AGAA(.) → U8_AGAA(U10_aa(gt_in_aa))
U8_GAAA(gt_out_aa(X, Y)) → MERGE_IN_GAAA(.)
MERGE_IN_GAAA(.) → U6_GAAA(U11_aa(le_in_aa))
MERGE_IN_GAAA(.) → U6_GAAA(le_out_aa(0, 0))
MERGE_IN_GAAA(.) → U8_GAAA(U10_aa(gt_in_aa))
MERGE_IN_AGAA(.) → U6_AGAA(le_out_aa(0, 0))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
SPLIT_IN_AAAA(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → SPLIT_IN_AAAA(Xs, Zs, Ys, Ls)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
SPLIT_IN_AAAA → SPLIT_IN_AAAA
SPLIT_IN_AAAA → SPLIT_IN_AAAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag([], [], [], Ls) → split_out_gaag([], [], [], Ls)
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(Xs, [], Xs, Ls) → merge_out_agaa(Xs, [], Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
merge_in_gaaa([], Xs, Xs, Ls) → merge_out_gaaa([], Xs, Xs, Ls)
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → MERGESORT_IN_GAA(X2s, Y2s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → MERGESORT_IN_GAA(X1s, Y1s, Ls)
U1_GAA(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_GAA(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
MERGESORT_IN_GAA(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_GAA(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
mergesort_in_gaa([], [], Ls) → mergesort_out_gaa([], [], Ls)
mergesort_in_gaa(.(X, []), .(X, []), Ls) → mergesort_out_gaa(.(X, []), .(X, []), Ls)
mergesort_in_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls)) → U1_gaa(X, Y, Xs, Ys, H, Ls, split_in_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls)))
split_in_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_gaag(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U1_gaa(X, Y, Xs, Ys, H, Ls, split_out_gaag(.(X, .(Y, Xs)), X1s, X2s, .(H, Ls))) → U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_in_gaa(X1s, Y1s, Ls))
U5_gaag(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_gaag(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U2_gaa(X, Y, Xs, Ys, H, Ls, X2s, mergesort_out_gaa(X1s, Y1s, Ls)) → U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_in_gaa(X2s, Y2s, Ls))
split_in_aaaa([], [], [], Ls) → split_out_aaaa([], [], [], Ls)
split_in_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls)) → U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_in_aaaa(Xs, Zs, Ys, Ls))
U3_gaa(X, Y, Xs, Ys, H, Ls, Y1s, mergesort_out_gaa(X2s, Y2s, Ls)) → U4_gaa(X, Y, Xs, Ys, H, Ls, merge_in_ggag(Y1s, Y2s, Ys, .(H, Ls)))
U5_aaaa(X, Xs, Ys, Zs, H, Ls, split_out_aaaa(Xs, Zs, Ys, Ls)) → split_out_aaaa(.(X, Xs), .(X, Ys), Zs, .(H, Ls))
U4_gaa(X, Y, Xs, Ys, H, Ls, merge_out_ggag(Y1s, Y2s, Ys, .(H, Ls))) → mergesort_out_gaa(.(X, .(Y, Xs)), Ys, .(H, Ls))
merge_in_ggag([], Xs, Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Xs, Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
merge_in_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U6_ggag(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U8_ggag(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
le_in_aa(s(X), s(Y)) → U11_aa(X, Y, le_in_aa(X, Y))
le_in_aa(0, s(0)) → le_out_aa(0, s(0))
le_in_aa(0, 0) → le_out_aa(0, 0)
U7_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
gt_in_aa(s(X), s(Y)) → U10_aa(X, Y, gt_in_aa(X, Y))
gt_in_aa(s(0), 0) → gt_out_aa(s(0), 0)
U9_ggag(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_ggag(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U11_aa(X, Y, le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa([], Xs, Xs, Ls) → merge_out_agaa([], Xs, Xs, Ls)
merge_in_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
merge_in_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U10_aa(X, Y, gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs, [], Xs, Ls) → merge_out_gaaa(Xs, [], Xs, Ls)
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls)) → U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_in_aa(X, Y))
merge_in_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls)) → U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_in_aa(X, Y))
U6_agaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U8_agaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U6_gaaa(X, Xs, Y, Ys, Zs, H, Ls, le_out_aa(X, Y)) → U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_agaa(Xs, .(Y, Ys), Zs, Ls))
U8_gaaa(X, Xs, Y, Ys, Zs, H, Ls, gt_out_aa(X, Y)) → U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_in_gaaa(.(X, Xs), Ys, Zs, Ls))
U7_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U9_agaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_agaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
U7_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_agaa(Xs, .(Y, Ys), Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(X, Zs), .(H, Ls))
U9_gaaa(X, Xs, Y, Ys, Zs, H, Ls, merge_out_gaaa(.(X, Xs), Ys, Zs, Ls)) → merge_out_gaaa(.(X, Xs), .(Y, Ys), .(Y, Zs), .(H, Ls))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
MERGESORT_IN_GAA(.) → U1_GAA(split_in_gaag(., .))
U2_GAA(X2s, mergesort_out_gaa(X1s, Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(., X1s, X2s, .)) → U2_GAA(X2s, mergesort_in_gaa(X1s))
U1_GAA(split_out_gaag(., X1s, X2s, .)) → MERGESORT_IN_GAA(X1s)
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., [], y1, .)) → U2_GAA(y1, mergesort_out_gaa([], []))
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
U1_GAA(split_out_gaag(., [], y1, .)) → U2_GAA(y1, mergesort_out_gaa([], []))
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
MERGESORT_IN_GAA(.) → U1_GAA(split_in_gaag(., .))
U2_GAA(X2s, mergesort_out_gaa(X1s, Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(., X1s, X2s, .)) → MERGESORT_IN_GAA(X1s)
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
MERGESORT_IN_GAA(.) → U1_GAA(split_in_gaag(., .))
U2_GAA(X2s, mergesort_out_gaa(X1s, Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(., X1s, X2s, .)) → MERGESORT_IN_GAA(X1s)
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U2_GAA(X2s, mergesort_out_gaa(X1s, Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(., X1s, X2s, .)) → MERGESORT_IN_GAA(X1s)
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., ., x1, .)) → MERGESORT_IN_GAA(.)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U1_GAA(split_out_gaag(., ., x1, .)) → MERGESORT_IN_GAA(.)
U2_GAA(X2s, mergesort_out_gaa(X1s, Y1s)) → MERGESORT_IN_GAA(X2s)
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U2_GAA(., mergesort_out_gaa(x1, x2)) → MERGESORT_IN_GAA(.)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, U1_gaa(split_in_gaag(., .)))
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U2_GAA(., mergesort_out_gaa(x1, x2)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., ., x1, .)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., ., ., .)) → U2_GAA(., U1_gaa(split_in_gaag(., .)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U2_GAA(., mergesort_out_gaa(x1, x2)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., ., x1, .)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., ., ., .)) → U2_GAA(., U1_gaa(split_in_gaag(., .)))
U1_GAA(split_out_gaag(., ., y1, .)) → U2_GAA(y1, mergesort_out_gaa(., .))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)
U1_GAA(split_out_gaag(., ., ., .)) → U2_GAA(., mergesort_out_gaa(., .))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
MERGESORT_IN_GAA(.) → U1_GAA(U5_gaag(split_in_aaaa))
U2_GAA(., mergesort_out_gaa(x1, x2)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., ., ., .)) → U2_GAA(., mergesort_out_gaa(., .))
U1_GAA(split_out_gaag(., ., x1, .)) → MERGESORT_IN_GAA(.)
U1_GAA(split_out_gaag(., ., ., .)) → U2_GAA(., U1_gaa(split_in_gaag(., .)))
mergesort_in_gaa([]) → mergesort_out_gaa([], [])
mergesort_in_gaa(.) → mergesort_out_gaa(., .)
mergesort_in_gaa(.) → U1_gaa(split_in_gaag(., .))
split_in_gaag(., .) → U5_gaag(split_in_aaaa)
U1_gaa(split_out_gaag(., X1s, X2s, .)) → U2_gaa(X2s, mergesort_in_gaa(X1s))
U5_gaag(split_out_aaaa(Xs, Zs, Ys)) → split_out_gaag(., ., Zs, .)
U2_gaa(X2s, mergesort_out_gaa(X1s, Y1s)) → U3_gaa(Y1s, mergesort_in_gaa(X2s))
split_in_aaaa → split_out_aaaa([], [], [])
split_in_aaaa → U5_aaaa(split_in_aaaa)
U3_gaa(Y1s, mergesort_out_gaa(X2s, Y2s)) → U4_gaa(merge_in_ggag(Y1s, Y2s, .))
U5_aaaa(split_out_aaaa(Xs, Zs, Ys)) → split_out_aaaa(., ., Zs)
U4_gaa(merge_out_ggag(Y1s, Y2s, Ys, .)) → mergesort_out_gaa(., Ys)
merge_in_ggag([], Xs, Ls) → merge_out_ggag([], Xs, Xs, Ls)
merge_in_ggag(Xs, [], Ls) → merge_out_ggag(Xs, [], Xs, Ls)
merge_in_ggag(., ., .) → U6_ggag(le_in_aa)
merge_in_ggag(., ., .) → U8_ggag(gt_in_aa)
U6_ggag(le_out_aa(X, Y)) → U7_ggag(merge_in_agaa(.))
U8_ggag(gt_out_aa(X, Y)) → U9_ggag(merge_in_gaaa(.))
le_in_aa → U11_aa(le_in_aa)
le_in_aa → le_out_aa(0, s(0))
le_in_aa → le_out_aa(0, 0)
U7_ggag(merge_out_agaa(.)) → merge_out_ggag(., ., ., .)
gt_in_aa → U10_aa(gt_in_aa)
gt_in_aa → gt_out_aa(s(0), 0)
U9_ggag(merge_out_gaaa(.)) → merge_out_ggag(., ., ., .)
U11_aa(le_out_aa(X, Y)) → le_out_aa(s(X), s(Y))
merge_in_agaa(Xs) → merge_out_agaa(Xs)
merge_in_agaa(.) → U6_agaa(le_in_aa)
merge_in_agaa(.) → U8_agaa(gt_in_aa)
U10_aa(gt_out_aa(X, Y)) → gt_out_aa(s(X), s(Y))
merge_in_gaaa(Xs) → merge_out_gaaa(Xs)
merge_in_gaaa(.) → U6_gaaa(le_in_aa)
merge_in_gaaa(.) → U8_gaaa(gt_in_aa)
U6_agaa(le_out_aa(X, Y)) → U7_agaa(merge_in_agaa(.))
U8_agaa(gt_out_aa(X, Y)) → U9_agaa(merge_in_gaaa(.))
U6_gaaa(le_out_aa(X, Y)) → U7_gaaa(merge_in_agaa(.))
U8_gaaa(gt_out_aa(X, Y)) → U9_gaaa(merge_in_gaaa(.))
U7_agaa(merge_out_agaa(.)) → merge_out_agaa(.)
U9_agaa(merge_out_gaaa(.)) → merge_out_agaa(.)
U7_gaaa(merge_out_agaa(.)) → merge_out_gaaa(.)
U9_gaaa(merge_out_gaaa(.)) → merge_out_gaaa(.)
mergesort_in_gaa(x0)
split_in_gaag(x0, x1)
U1_gaa(x0)
U5_gaag(x0)
U2_gaa(x0, x1)
split_in_aaaa
U3_gaa(x0, x1)
U5_aaaa(x0)
U4_gaa(x0)
merge_in_ggag(x0, x1, x2)
U6_ggag(x0)
U8_ggag(x0)
le_in_aa
U7_ggag(x0)
gt_in_aa
U9_ggag(x0)
U11_aa(x0)
merge_in_agaa(x0)
U10_aa(x0)
merge_in_gaaa(x0)
U6_agaa(x0)
U8_agaa(x0)
U6_gaaa(x0)
U8_gaaa(x0)
U7_agaa(x0)
U9_agaa(x0)
U7_gaaa(x0)
U9_gaaa(x0)